package com.authine.cloudpivot.web.api.secondopen.service;

import com.authine.cloudpivot.engine.api.model.runtime.BizObjectCreatedModel;
import com.authine.cloudpivot.web.api.secondopen.domain.*;
import com.authine.cloudpivot.web.api.secondopen.modules.MdmBankEntry;
import com.authine.cloudpivot.web.api.secondopen.modules.QadResultVO;
import com.authine.cloudpivot.web.api.secondopen.modules.VoucherDeatailVO;
import com.authine.cloudpivot.web.api.secondopen.modules.VoucherVO;
import com.authine.cloudpivot.web.api.secondopen.vo.ProhibitionTimeVO;

import java.util.List;

public interface ReimburseService {


    /**
     * 提交借款扣减金额和驳回还原金额
     *
     * @return
     */
    public int loanQuotaAmount(Ie6s6Jkdlc ie6s6Jkdlc);

    /**
     * 扣减B表额度
     *
     * @param iusi6BmsqsB
     * @return
     */
    public int kjBTableBudget(Iusi6BmsqsB iusi6BmsqsB);

    /**
     * 根据id批量查询子表剩余额度
     *
     * @param iusi6BmsqsBs
     * @return
     */
    public List<Iusi6BmsqsB> getBQuota(List<Iusi6BmsqsB> iusi6BmsqsBs);

    /**
     * 获取报销禁止时间
     */
    public List<ProhibitionTimeVO> getProhibitionTime();

    /**
     * 将零星票据报销单数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertLxpjbxlc(BizObjectCreatedModel bizObject);

    /**
     * 将汇款单数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertHksqdlc(BizObjectCreatedModel bizObject);

    /**
     * 将借款单数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertJkdlc(BizObjectCreatedModel bizObject);

    /**
     * 将医药费报销数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertYyfbxlc(BizObjectCreatedModel bizObject);

    /**
     * 将差旅费报销数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertClfbxlc(BizObjectCreatedModel bizObject);

    /**
     * 将行车报销数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertWbxcbxdlc(BizObjectCreatedModel bizObject);

    /**
     * 将供应商预付款申请表流程数据转为凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertGysyfksqblc(BizObjectCreatedModel bizObject);



    /**
     * 转换凭证数据
     *
     * @param bizObject
     * @return
     */
    public List<VoucherDeatailVO> convertPzxx(BizObjectCreatedModel bizObject,String jfzbCode,String dfzbCode);

    /**
     * 根据发票号查询发票信息
     *
     * @param fphs
     * @return
     */
    public List<Ie6s6Fpsyjlxx> getFpDeatailByParam(String[] fphs);

    /**
     * 插入发票数据
     *
     * @param ie6s6Fpsyjlxx
     * @return
     */
    public int addFpsyjlx(Ie6s6Fpsyjlxx ie6s6Fpsyjlxx);

    /**
     * 根据发票号删除发票数据
     *
     * @param fph
     * @return
     */
    public int delFpsyjlxByFph(String fph);

    /**
     * 修改凭证号
     *
     * @param processCode
     * @param objId
     * @param pzh
     * @return
     */
    public int updGenerateVoucher(String processCode, String objId, String pzh,String msg);

    /**
     * 修改付款状态
     *
     * @param processCode
     * @param objId
     * @return
     */
    public int updPaymentStatus(String processCode, String objId, String status);

    /**
     * 转化为银行分录对象
     *
     * @param bizObject
     * @param yfhkjfkmSheet
     * @param yfhkdfkmSheet
     * @return
     */
    public MdmBankEntry convertYhfl(BizObjectCreatedModel bizObject, String yfhkjfkmSheet, String yfhkdfkmSheet,String payDate);

    /**
     * 根据公司缩写查询会计单位
     *
     * @return
     */
    public List<Ie6s6Kjdwxx> getKjdwxxBySsgs(String ssgs);
}
